package model;

import exceptions.NulOnbekendException;
import exceptions.SoortOnbekendException;


public class Attribuut {
	private String databankNaam;
	private String tabelNaam;
	private String naam;
	private Soort soort;
	private Leeg nul;
	
	public Attribuut(String databankNaam, String tabelNaam, String naam, String soort, String nul) throws SoortOnbekendException, NulOnbekendException {
		this.databankNaam = databankNaam;
		this.tabelNaam = tabelNaam;
		this.naam = naam;
		
		if(Soort.contains(soort) == null) {
			throw new SoortOnbekendException("Soort " + soort + " wordt niet ondersteund");
		} else if(Soort.contains(soort).equals("VARCHAR")) {
			this.soort = Soort.VARCHAR;
		} else if(Soort.contains(soort).equals("INT")) {
			this.soort = Soort.INT;
		} else {
			throw new SoortOnbekendException("Soort " + soort + " wordt niet ondersteund");
		}
		
		if(Leeg.contains(nul) == null) {
			throw new NulOnbekendException("Nul is niet Leeg");
		} else if(Leeg.contains(nul).equals("NOTNULL")) {
			this.nul = Leeg.NOTNULL;
		} else if(Leeg.contains(nul).equals("NULL")) {
			this.nul = Leeg.NULL;
		} else {
			throw new NulOnbekendException("Nul is niet Leeg");
		}
	}
	
	public boolean isSoortCorrect(String waarde) throws SoortOnbekendException {
		boolean gelijk = true;
		if(soort == Soort.VARCHAR) {
			//Dit klopt altijd
		} else if (soort == Soort.INT) {
			try {
				Integer.parseInt(waarde);
			} catch(NumberFormatException nfe) {
				gelijk = false;
			}
		} else {
			throw new SoortOnbekendException("Soort wordt niet ondersteund");
		}
		
		return gelijk;
	}

	public String getDatabankNaam() {
		return databankNaam;
	}

	public String getTabelNaam() {
		return tabelNaam;
	}
	
	public String getNaam() {
		return naam;
	}

	public Soort getSoort() {
		return soort;
	}

	public Leeg getNul() {
		return nul;
	}

	public void setDatabankNaam(String databankNaam) {
		this.databankNaam = databankNaam;
	}

	public void setTabelNaam(String tabelNaam) {
		this.tabelNaam = tabelNaam;
	}

	public void setNaam(String naam) {
		this.naam = naam;
	}

	public void setSoort(Soort soort) {
		this.soort = soort;
	}

	public void setNul(Leeg nul) {
		this.nul = nul;
	}

}
